-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optionally vendor GNUStep's libobjc2
#44
Conversation
We're including it as a submodule (and not e.g. a subtree) because libobjc2 itself uses submodules for a third-party dependency.
55c3989
to
38da1f3
Compare
I was originally gonna be setting it up so that However, now I'm probably gonna be dropping this PR, since it doesn't really have a big enough use-case to make it worth the effort: Developers would probably want to install the toolchain themselves since they'll need all the other tools, and users would be required to since linking would still have to be done dynamically (though maybe not for Everything in software is a balance, and this would add a bunch of complexity that a project like this one (a fork of only a semi-popular project) is NOT equipped to handle! That said, this investigation has not been entirely in vain, I've learned a lot about C/C++ build systems, GNUStep, and the relationship between the different runtimes, and I have some ideas for how the cargo build scripts can be better set up. I'm ready to reopen this discussion if someone has any input. |
// GNUStep only compiles with clang, so try that first. | ||
// (But let the user specify a different path if they need to). | ||
if env::var_os("CC").is_none() { | ||
env::set_var("CC", "clang"); | ||
} | ||
if env::var_os("CXX").is_none() { | ||
env::set_var("CXX", "clang++"); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is probably also a bad idea, though not sure if there's a better alternative...
The idea is that people would be able to play with
objc2
without having to setup an entire GNUStep installation.As a separate crate from
objc2_sys
so that users don't download the entire GNUStep source when they don't need to (which is very much the common case)!gnustep_libobjc2_sys
crate w. submodule referencinglibobjc2
and build instructionsobjc2_sys
under a crate featuregnustep-base
(for Foundation)?libz-sys
and inopenssl-sys
.openssl-sys
docs.build.rs
so that downstream build scripts can run properlyobjc2_block
work better (maybe addobjc2_block_sys
crate?)